# coding: utf-8
# 文件名称: 存放家具面向对象.py
# 创建时间: 2021/6/4 10:25

"""
需求：
1. 定义一个房间类，存储房间大小和房间里的所有家具，并且能够添加新家具
2. 定义家具类，存放自己的大小和名称
3. 添加开、关灯，让房间、床一起亮、灭
"""

class Home:

    def __init__(self, area):
        self.area = area # 房间剩余可用面积
        self.light = '亮' # 灯默认是亮的
        self.containItem = []  # 存储家具

    def __str__(self):
        msg = "当前房间可用面积为：" + str(self.area)
        if len(self.containItem) > 0:
            msg = msg +  " 容纳的物品有："
            for temp in self.containItem:
                msg = msg + temp.getName() + "，"
            msg = msg.strip("，")
        return msg

    # 容纳物品方法
    def accommodateItem(self, item): # item是新家具
        # 获取灯的状态
        needLight = item.getLight()
        print(f'灯 {needLight}')
        # 获取新家具面积
        needArea = item.getUsedArea()
        # 如果可用面积大于家具面积，则放到房间里，否则提示
        if self.area > needArea:
            self.containItem.append(item)
            self.area -= needArea
            print(f'{item} 已经放到房间中')
        else:
            print('房间面积不够大，放不下家具了！')


# 定义床的类
class Bed:

    def __init__(self, area, name='床', light = '亮'):
        self.name = name
        self.area = area
        self.light = light

    def __str__(self):
        msg = f'{self.name} 的面积为{self.area},灯 {self.light}'
        return msg

    # 获取床占用面积的方法
    def getUsedArea(self):
        return self.area

    def getName(self):
        return self.name

    def getLight(self):
        return self.light

# 创建一个新家对象
new_home = Home(100)
print(new_home)

# 创建一个床的对象
new_bed = Bed(20)
print('new_bed++++++++++',new_bed)

# 把床安在家里
new_home.accommodateItem(new_bed)
print('jijoijoiio',new_home)


# 创建一个床的对象
new_bed2 = Bed(30)
print('new_bed2======',new_bed2)

# 把床安在家里
new_home.accommodateItem(new_bed2)
print(new_home)